package kegg;

import java.util.ArrayList;
import java.util.List;

/**
 * @file Entry.java
 * @author Juan Humanes Ferrer
 * @date 04-Marzo-2014
 */
public class Entry {

    private String id;
    private String name;
    private String type;
    private List components;

    /**
     * Representa una entrada de un pathway. Una entrada es un gen o un conjunto
     * de ellos. Existen entradas de tipo group, que es la union de varias
     * entradas, en ese caso el nombre es nulo y cada entrada es un elemento de
     * la lista de components. Constructor de la clase. Se inicializa la lista
     * de componentes.
     */
    public Entry() {
        this.components = new ArrayList();

    }

    /**
     * Metodo que retorna el identificador de una entrada
     *
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * Metodo que modifica el identificador de una entrada
     *
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * Metodo que retorna el nombre de una entrada. Si la entrada es un gen, es
     * el nombre es un gen o un conjunto de ellos. Si es de tipo group, el
     * nombre es nulo.
     *
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * Metodo que modifica el nombre de una entrada.
     *
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Metodo que retorna el tipo de entrada. Puede ser "gene" o "group".
     *
     * @return type
     */
    public String getType() {
        return type;
    }

    /**
     * Metodo que modifica el tipo de entrada.
     *
     * @param type
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * Metodo que retorna la lista de componentes.
     *
     * @return components
     */
    public List getComponents() {
        return components;
    }

    /**
     * Metodo que modifica la lista de componentes.
     *
     * @param components
     */
    public void setComponents(List components) {
        this.components = components;
    }

    /**
     * Metodo para añadir un componente. Se añade el identificador de cada una
     * de las entradas que lo componen.
     *
     * @param id
     */
    public void addComponent(String id) {
        this.components.add(id);
    }

}
